/**
* apisvr 配置类
* @author thinkry
*/

#ifndef __APISVR_CONFIG_H__
#define __APISVR_CONFIG_H__

#include "apidef.h"

class CAPIConfig
{
public:
    // 共享内存
    CTSizeString<CT_PATH_MAX>	MgrShmKey;

    // 和enpsvr通讯的ShmQueue的配置
    CTSizeString<CT_PATH_MAX>	EnpFrontEndShmKey; ///< 前端共享内存的Key
    int     EnpFrontEndShmSize;   ///< 前端共享内存的大小(这里是共享内存的总大小，单向队列的大小是1/2)
    CTSizeString<CT_PATH_MAX>   EnpFrontEndSocket;    ///< 前端的UnixSocketFile
    CTSizeString<CT_PATH_MAX>   EnpBackEndSocket;     ///< 后端的UnixSocketFile

    // 和tapi mpsvr通讯ShmQueue的配置
    CTSizeString<CT_PATH_MAX>	TApiFrontEndShmKey; ///< 前端共享内存的Key
    int     TApiFrontEndShmSize;   ///< 前端共享内存的大小(这里是共享内存的总大小，单向队列的大小是1/2)
    CTSizeString<CT_PATH_MAX>   TApiFrontEndSocket;    ///< 前端的UnixSocketFile
    CTSizeString<CT_PATH_MAX>   TApiBackEndSocket;     ///< 后端的UnixSocketFile

public:
    int LoadConfig();

    int ReloadConfig();

    // 读取日志配置
    int LoadLogConfig();

    //读取动态配置
    int LoadDynamicConfig();

protected:
    void Ftok(char* pszPathName, size_t iLen);
};

/** 全局配置 */
#define CONF    (CTLib::CTSingleton<CAPIConfig, 0>::Instance())

#endif //__APISVR_CONFIG_H__
